<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /* 定义函数  
            function 函数名(){  //函数名自己起 
                // 函数也是标识符 按照标识符命名规则及规范
                // 一般起名用动词  
                // ()必须写 
                // {} 必须写  

            }

            // 上面这种叫做声明式的定义函数 


            //下面的这种焦作赋值式的定义函数  
            var name = 100;
            var 变量 = function(){
                // 这种function后边就不写函数名了  
                //直接跟着小括号  
                // {}也是不能丢的 
                // function后边不带名字的  又叫匿名函数  
            }
        
        
        */

        // 九九乘法口诀表  

        // for (var i = 1; i < 10; i++) {
        //     for (var j = 1; j <= i; j++) {
        //         document.write(j + '*' + i + '=' + j * i + '&nbsp;');
        //     }
        //     document.write('<br>');
        // }

        //声明式的函数 制造了一个工具  
        function myNine() {
            for (var i = 1; i < 10; i++) {
                for (var j = 1; j <= i; j++) {
                    document.write(j + '*' + i + '=' + j * i + '&nbsp;');
                }
                document.write('<br>');
            }
        }

        // 用赋值式的方法造了一个工具  
        var nineNine = function(){
            for (var i = 1; i < 10; i++) {
                for (var j = 1; j <= i; j++) {
                    document.write(j + '*' + i + '=' + j * i + '&nbsp;');
                }
                document.write('<br>');
            }
        }
        //同一个文件  函数名一样  后边会降前面的覆盖掉 
        /* var nineNine = function(){
            for (var i = 1; i < 6; i++) {
                for (var j = 1; j <= i; j++) {
                    document.write(j + '*' + i + '=' + j * i + '&nbsp;');
                }
                document.write('<br>');
            }
        } */

        //工具造好了 它不会执行  
        // 想用必须手动调用  

        // 手机也是个工具  不用放一边   不起作用 
        // 用的话 拿过来  

        myNine(); //名字跟造工具的名字保持一致  
        document.write('<hr >')
        nineNine();// ()小括号代表 里边的代码执行;
        //不加小括号代码不会执行  

        myNine(); //名字跟造工具的名字保持一致  
        document.write('<hr >')
        nineNine();// 


        myNine(); //名字跟造工具的名字保持一致  
        document.write('<hr >')
        nineNine();// 

        myNine(); //名字跟造工具的名字保持一致  
        document.write('<hr >')
        nineNine();//  工具可以被无数次的使用    


        // 注意事项 
        // 同一个文件 定义函数的时候 名字不能重复  



        // 给小孩讲故事 

       // 第一遍 
       /* 从前有座山 
       山上有座庙 
       庙里有个老和尚 
       还有一个小和尚
       老和尚再给小和尚讲故事 
       故事的内容是: */

    // 减少重复代码 
    // 提升复用性   



    // tell_story();
    function tell_story(){
        document.write('山上有座庙\n庙里有个老和尚\n还有一个小和尚\n老和尚再给小和尚讲故事\n故事的内容是:')
    }
    // tell_story();

    // tell_story();
    // document.write('<br />')
    // tell_story();
    // document.write('<br />')
    // tell_story();
    // document.write('<br />')
    // tell_story();
    // document.write('<br />')
    // tell_story();
    // for(var i=1;i<=100;i++){
    //     tell_story();
    //     document.write('<br />')
    // }

    // t_story();
    var t_story = function(){
        document.write('山上有座庙\n庙里有个老和尚\n还有一个小和尚\n老和尚再给小和尚讲故事\n故事的内容是:')
    }
    // for(var i=1;i<=100;i++){
    //     t_story();
    //     document.write('<br />')
    // }

    // t_story();


    // 声明式函数 和赋值式函数的区别: 

    // 声明式函数  函数声明以前 或者以后 都可以调用 
    // 赋值式函数  只能函数声明以后调用  
    // 否则就提示 ** is not a function   



    var use_tools = tell_story; // 将一个函数赋值给一个变量 
    //简单说就是给这个函数起了一个别名  
    // 赋值的时候不要加() 

    use_tools();

    </script>
</body>

</html>